package com.ruoyi.common.datapermission.rule;

import com.mybatisflex.core.query.QueryTable;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.table.TableInfo;

import java.util.List;

/**
 * 数据权限规则接口
 * 通过实现接口，自定义数据规则。例如说，
 *
 * @author 芋道源码
 */
public interface DataPermissionRule {
    /**
     * 处理数据权限 SQL
     * @param queryWrapper
     * @param queryTables
     */
    void dealDataPermissionSQL(QueryWrapper queryWrapper, List<QueryTable> queryTables);

    /**
     * 处理数据权限 SQL
     * @param schema
     * @param tableName
     * @param sql
     * @return
     */
    void dealDataPermissionSQL(String schema, String tableName, StringBuilder sql);

    /**
     * 处理数据权限 SQL
     * @param tableInfo
     * @param sql
     * @return
     */
    void dealDataPermissionSQL(TableInfo tableInfo, StringBuilder sql);
}
